import { Solar } from 'lunar-typescript'

export interface DateInfo {
  time: {
    hours: string // 修改为 string 类型以便保留 2 位数字格式
    minutes: string // 修改为 string 类型以便保留 2 位数字格式
    seconds: string // 修改为 string 类型以便保留 2 位数字格式
  }
  gregorianDate: {
    month: string // 确保是两位数格式
    day: string // 确保是两位数格式
  }
  weekday: string
  lunarDate: {
    year: number
    month: number
    day: number
    yearName: string
    monthName: string
    dayName: string
  }
  amOrPm: string
}

/**
 * 获取当前日期信息
 */
export function getCurrentDateInfo(): DateInfo {
  const now = new Date()

  // 获取当前时间：时分秒，确保是两位数
  const time = {
    hours: now.getHours().toString().padStart(2, '0'), // 确保是两位数格式
    minutes: now.getMinutes().toString().padStart(2, '0'), // 确保是两位数格式
    seconds: now.getSeconds().toString().padStart(2, '0') // 确保是两位数格式
  }

  // 获取当前格里高利历日期：月日，确保是 2 位数字
  const gregorianDate = {
    month: (now.getMonth() + 1).toString().padStart(2, '0'), // 确保是两位数格式
    day: now.getDate().toString().padStart(2, '0') // 确保是两位数格式
  }

  // 获取星期几
  const weekdays = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六']
  const weekday = weekdays[now.getDay()]

  // 使用 lunar-typescript 获取当前日期的农历信息
  const solar = Solar.fromYmd(now.getFullYear(), now.getMonth() + 1, now.getDate())
  const lunar = solar.getLunar()

  const lunarDate = {
    year: lunar.getYear(),
    month: lunar.getMonth(),
    day: lunar.getDay(),
    yearName: lunar.getYearInGanZhi(),
    monthName: lunar.getMonthInChinese(),
    dayName: lunar.getDayInChinese()
  }

  const amOrPm = now.getHours() < 12 ? '上午' : '下午'

  return {
    time,
    gregorianDate,
    weekday,
    lunarDate,
    amOrPm
  }
}
